การ Restore EC2 Instance โดยใช้ IP Address และ Mac Address เดิม
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
การใช้งาน EC2 Instance บางครั้งอาจมีการตั้งค่าผิดพลาด เช่น ติดตั้งคำสั่งหรือดำเนินการสิ่งต่างๆ ในระบบ Server EC2 Instance ผิดพลาดจนทำให้ระบบรวนถึงขั้นต้องเปลี่ยน EC2 Instance ใหม่ !
แต่การเปลี่ยน EC2 Instance ตัวใหม่ในบางกรณี ก็ต้องการให้มีรายละเอียดเครือข่ายต่างๆ เช่น Network interface ID (ENI), VPC ID, Subnet ID, Private IPv4 address, Public IPv4 address, Mac Address เหมือนกับ EC2 Instance ตัวเก่า ดังนั้นผมจะมาแนะนำวิธีการสร้าง EC2 Instance ตัวใหม่โดย Restore EC2 Instance จาก AMI เพื่อให้มีรายละเอียดเครือข่ายเหมือนกับที่กล่าวมาทุกประการครับ
*การ Restore EC2 Instance ครั้งนี้ สามารถใช้ได้ทั้ง EC2 Instance ที่เป็น AMI แบบ Windows Server และ Amazon Linux ครับ
สิ่งที่ต้องเตรียม
※EC2 Instance ที่มีการเชื่อมโยงกับ Elastic IP แล้ว
สร้าง EC2 Instance
สร้าง EC2 Instance เพื่อใช้จำลองสถานการณ์ในการ Terminate
*ครั้งนี้จะใช้เป็น AMI แบบ Windows Server ครับ
ดูรายละเอียดการสร้าง EC2 Instance สำหรับ Windows Server ได้ที่ลิงก์ด้านล่างนี้ครับ
ตัวอย่างตั้งค่าการสร้าง Windows Server ใน EC2
※Create Key pairs
Key pairs:tinnakorn-test
(ป้อนชื่อที่ต้องการ)
Key pair type:RSA
Private key file format: ◉.pem
※Launch instances
Name and tags
Name:tinnakorn-test
(ป้อนชื่อที่ต้องการ)Application and OS Images (Amazon Machine Image)
Amazon Machine Image (AMI):Microsoft Windows Server 2022 Base
Instance type
Instance type:t3a.medium
(เลือกสเปคตามต้องการ)Key pair (login)
Key pair name - required:tinnakorn-test
(key pair ที่สร้างขึ้นเมื่อสักครู่นี้)Network settings
Firewall (security groups)
Security group name - required:tinnakorn-test
(ตั้งชื่อที่ต้องการ)
Description - required:tinnakorn-test
(ป้อนตามต้องการ)
Inbound security groups rules
▼ Security group rule 1 (TCP, 3389, xx.xx.xx.xx/32)
Type:rdp
| Source type:My IP
| Source:xx.xx.xx.xx/32
Configure storage
1x:30
GiBgp2
Root volume (Default)
เชื่อมโยง Elastic IP
เมื่อสร้าง EC2 Instance เสร็จแล้วให้เชื่อมโยง Elastic IP เข้ากับ EC2 Instance โดยดูรายละเอียดได้ที่ลิงก์ด้านล่างนี้ครับ
ตั้งค่า Network interface (ENI)
*จากนี้ไปจะเรียก Network interface ว่า ENI
ก่อนอื่นต้องตั้งค่า ENI เพื่อให้ ENI ยังคงอยู่หลังจากที่ Terminate Instance ไปแล้ว ก็จะสามารถนำ ENI นี้ไปใช้งานต่อได้ครับ
มาที่หน้าจอ EC2 Instance แล้วเลือก Instance ID
ของเรา แล้วจะมีข้อมูลแสดงด้านล่าง ให้เลือกแท็บ Networking
แล้วคลิก Interface ID
แล้วจะเข้ามาที่หน้าจอ Network interfaces แบบนี้ ซึ่งในตอนแรกในช่อง Name จะยังไม่มีชื่อ แนะนำให้ตั้งชื่อที่ต้องการเพื่อให้ง่ายต่อการค้นหา โดยครั้งนี้จะตั้งชื่อเดียวกับ EC2 Instance คือ tinnakorn-test
แล้วติ๊ก Network interface ID
เลือก Actions
เลือก Change termination behavior
แล้วปิดการใช้งาน Delete on instance termination โดยนำเครื่องหมาย ✅ ออก แล้วคลิก Save
เมื่อตั้งค่านี้แล้วต่อให้ทำการ Terminate Instance ไปแล้ว ENI ก็จะยังคงอยู่ครับ
บันทึกรายละเอียด ENI ที่ Attach กับ EC2 Instance
เมื่อตั้งค่า ENI เสร็จแล้ว จะต้องบันทึกรายละเอียด ENI เพื่อใช้เป็นข้อมูลต้นแบบในการสร้าง EC2 Instance ตัวใหม่ให้มีรายละเอียด ENI เหมือนเดิมกับ EC2 Instance ตัวเก่าที่จะ Terminate ครับ
จากขั้นตอนที่แล้ว คลิก Network interface ID
แล้วบันทึกรายละเอียด ENI ที่ Attach กับ EC2 Instance ตัวเก่าที่จะ Terminate เนื่องจาก ENI นี้เป็นรายละเอียดเดียวกับ EC2 Instance ตัวเก่า โดยครั้งนี้จะบันทึกใน Notepad ของ Windows ตามด้านล่างนี้ครับ
- Network interface ID:
eni-0cbfd89170ffb7096
(ENI)- VPC ID:
vpc-ab00ebcd
- Subnet ID:
subnet-1166aa59
- Private IPv4 address:
172.31.39.82
- Public IPv4 address:
18.143.230.26
(Elastic IP)- Mac Address:
06:ba:f9:3f:00:26
*เมื่อบันทึกตามที่กล่าวมาเสร็จแล้ว แนะนำให้ไปตรวจสอบข้อมูลเหล่านี้ในหน้าจอ EC2 Instance ด้วยครับ
ตรวจสอบรายละเอียด ENI เพิ่มเติมใน Terminal บน Windows Server ตัวเก่า
การตรวจสอบนี้จะดำเนินการใน Windows Server โดยให้ตรวจสอบ Physical Address(Mac Address) และ IPv4 Address ว่าตรงกับรายละเอียด ENI ที่เราบันทึกมาจากขั้นตอนที่แล้วหรือไม่
Login เข้าไปยัง Windows Server ตัวเก่า แล้วเปิดโปรแกรม Command Prompt
แล้วรันคำสั่งแสดงข้อมูลเกี่ยวกับการกำหนดค่าเครือข่ายของ Windows Server นี้
ipconfig /all
Output (example): แล้วดูที่ Physical Address
(Mac Address) และ IPv4 Address
จะเห็นว่ามีรายละเอียดเหมือนกับที่บันทึกมาจากขั้นตอนที่แล้วครับ
Command Prompt
C:\Users\Administrator>ipconfig /all
~~~~เนื้อหาที่ละเว้น~~~~
Ethernet adapter Ethernet 3:
Connection-specific DNS Suffix . : ap-southeast-1.compute.internal
Description . . . . . . . . . . . : Amazon Elastic Network Adapter
Physical Address. . . . . . . . . : 06-BA-F9-3F-00-26
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::b262:aaf5:461c:d39%2(Preferred)
IPv4 Address. . . . . . . . . . . : 172.31.39.82(Preferred)
~~~~เนื้อหาที่ละเว้น~~~~
เมื่อมั่นใจว่าบันทึกรายละเอียด ENI และตรวจสอบว่า ENI ที่จะใช้ตรงกับ EC2 Instance ตัวเก่าที่จะ Terminate แล้ว ให้เริ่มทำขั้นตอนต่อไปได้เลยครับ
*ในกรณีของ Linux สามารถตรวจสอบ IP Address และ Mac Address ได้โดยรันคำสั่งด้านล่างนี้
ifconfig
สร้าง AMI โดยใช้ Create Image จาก EC2
การสร้าง AMI ครั้งนี้จะไม่สร้างใน EC2 โดยตรง แต่จะสร้างใน AWS Backup แบบ "on-demand backup" เพื่อให้มีข้อมูลสำรองไว้ใช้กู้คืน และหากสำรองข้อมูลใน AWS Backup แล้ว ข้อมูลที่สำรองไว้ก็จะเข้าไปอยู่ใน AMI ด้วยครับ
เข้าไปที่ Service AWS Backup
เลือก Protected resources
จากเมนูด้านซ้าย แล้วคลิก Create on-demand backup
ด้านขวา
แล้วจะเข้ามาหน้าจอ Create on-demand backup แล้วจะตั้งค่า Settings ตามนี้
・Resource type: EC2
・Instance ID: i-0d96374d45942a02b
(ป้อน Instance ID ของตัวที่จะ Terminate)
・Backup window: Create backup now
・Retention period: 1
| Day
・Backup vault: Default
・IAM role: Default role
・คลิก Create on-demand backup
แล้วจะเข้ามาหน้าจอ Jobs โดยอัตโนมัติ จากนั้นให้รอสักครู่จนกว่า Status เป็น ✅ Completed
ต่อไปจะตรวจสอบที่ Recovery points โดยเลือก Backup vaults
จากเมนูด้านซ้าย แล้วเลือก Default
ด้านขวา
จะเห็นว่ามีการสำรองข้อมูลเข้ามาที่ Default ใน Recovery points เรียบร้อย และก็จะถูกสร้างใน AMI ด้วยเช่นกันครับ
ซึ่งเราสามารถคัดลอก ami-xxxx
ใน Recovery points หรือ ชื่อ
ใน Resource name ไปค้นหาใน AMI ได้ครับ
ต่อไปจะตรวจสอบที่ AMI โดยเข้าไปที่หน้าจอ Service EC2
เลือก AMIs
จากเมนูด้านซ้าย แล้วค้นหาและติ๊ก AMI
ที่ชื่อของเรา แล้วดูที่ Status จะเห็นว่าเป็น ✅ Available
(พร้อมใช้งาน)
จนถึงตอนนี้เราก็เตรียม Resource ที่ต้องใช้เสร็จเรียบร้อยแล้ว ก็ให้เริ่มทำขั้นตอนถัดไปได้เลยครับ
หากสนใจเกี่ยวกับการสำรองข้อมูลแบบ on-demand ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้
หากสนใจเกี่ยวกับการใช้ AMI ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้
ขั้นตอน
Terminate EC2 Instance
สมมติว่า EC2 Instance ตัวเก่านี้ไม่สามารถใช้งานต่อได้แล้ว เราก็จะทำการ Terminate ครับ
*ก่อนจะ Terminate ต้องมั่นใจก่อนว่าได้ทำการ ตั้งค่า ENI เรียบร้อยแล้ว
มาที่หน้าจอ EC2 Instance เลือก Instance ID
ของเรา แล้วเลือก Instance state
เลือก Terminate instance
แล้วรอจนกว่า Instance state เป็น Terminated
ตรวจสอบรายละเอียด ENI หลัง Terminate EC2 Instance ตัวเก่า
ต่อไปให้ตรวจสอบ ENI โดยเลือก Network Interfaces
จากเมนูด้านซ้าย แล้วค้นหา ENI ของเราด้วย Network interface ID ที่บันทึกไว้ก่อนหน้านี้ แล้วคลิก Network interface ID
แล้วตรวจสอบรายละเอียด ENI ในช่องสีแดงที่บันทึกไว้ก่อนหน้านี้อีกครั้ง จะเห็นว่ารายละเอียด ENI ยังคงอยู่เหมือนเดิมครับ
ส่วน Network interface status ในช่องสีน้ำเงินคือตอนแรกจะมีสถานะเป็น ✅ In-use
(ใช้งานอยู่) แต่ตอนนี้มีสถานะเป็น ⚠ Available
(พร้อมใช้งาน) เนื่องจากไม่มีการ Attach กับ Instance นั่นเอง
*ถ้าไม่เอา ✅ ออกจาก Delete on instance termination ในขั้นตอนก่อนหน้านี้ ENI นี้จะถูกลบไปด้วย*
ต่อไปให้ดูที่ EIP โดยเลือก Elastic IPs
จากเมนูด้านซ้าย ค้นหาและติ๊ก Allocated IPv4 address
ของเรา แล้วรายละเอียดจะแสดงด้านล่าง แล้วดูที่ Network interface ID จะเห็นว่าตัว EIP ตัวนี้ยังคงแนบกับ ENI อยู่เหมือนเดิมครับ
การ Restore EC2 Instance
ขั้นตอนนี้จะมา Restore EC2 Instance โดยจะทำให้มีรายละเอียด ENI ตรงกับที่บันทึกไว้ก่อนหน้านี้
ตรวจสอบ AMI
เข้าไปที่ Service AWS Backup
เลือก Backup vaults
จากเมนูด้านซ้าย เลือก Default
ให้ดูที่หัวข้อ Recovery points แล้วคัดลอก AMI ID
ด้านหลังในช่อง Recovery point ID เพื่อนำไปค้นหาใน AMI
*เราสามารถ Restore EC2 Instance จากที่นี่ได้ แต่ไม่สามารถตั้งค่า IP Address ได้ ซึ่งครั้งนี้จำเป็นต้องตั้งค่า IP Address จึงต้องไป Launch instance จาก AMI ครับ
เข้าไปที่ Service EC2
เลือก AMIs
จากเมนูด้านซ้าย ค้นหาโดยเลือกเป็น Private images ▼
|AMI ID
แล้วคลิก AMI ID
แล้วจะมีรายละเอียดเกี่ยวกับ AMI ของ Instance ที่ Terminate ไปก่อนหน้านี้
ต่อไปเราจะทำการสร้าง EC2 Instance ตัวใหม่จาก AMI นี้โดยคลิก Launch instance from AMI
แล้วจะทำการตั้งค่าในขั้นตอนถัดไป
สร้าง EC2 Instance ตัวใหม่
จากขั้นตอนที่แล้ว เมื่อคลิก Launch instance from AMI
ก็จะเข้ามายังหน้าจอ Launch an instance แล้วจะทำการตั้งค่าดังนี้
การสร้าง EC2 Instance ตัวใหม่ครั้งนี้จะตั้งค่าตาม ตัวอย่างตั้งค่าการสร้าง Windows Server ใน EC2 แค่บางส่วนเท่านั้น
แต่ในส่วนของ Network settings ต้องตั้งค่าตามรายละเอียด ENI เพื่อให้มีข้อมูลการกำหนดค่าเครือข่ายเหมือนกับ EC2 Instance ตัวเก่าครับ
มาเริ่มกันที่หัวข้อ Name and tags
Name: tinnakorn-test
หัวข้อ Application and OS Images (Amazon Machine Image)
ไม่ต้องดำเนินการใดๆ เนื่องจากเป็นการตั้งค่าที่ Launch มาจาก AMI
หัวข้อ Instance Type
Instance type: t3a.medium
หัวข้อ Key Pair (login)
Key Pair name: tinnakorn-test
หัวข้อ Network settings
คลิก Edit
แล้วตั้งค่าหัวข้อ Network settings ตามรายละเอียด ENI ที่บันทึกไว้ก่อนหน้านี้
VPC: vpc-ab00ebcd
Subnet: subnet-1166aa59
Auto-assign public IP: Disable
*หากไม่เลือก Subnet และ VPC เดียวกับ EC2 Instance ที่ลบไปแล้วจะไม่สามารถเลือก ENI ตัวเดิมได้*
Firewall (security groups)
เลือก 🔵 Select existing security group
▼ Advanced network configuration
Network interface 1
Network interface: eni-0cbfd89170ffb7096
*การเลือก ENI จะไม่สามารถระบุ Security Group ได้ เพราะ ENI จะผูก Security Group ตัวก่อนไว้อยู่แล้ว*
หัวข้อ Configure storage
ใช้เป็นค่าเริ่มต้น
หัวข้อ Summary
ตรวจสอบรายละเอียดการตั้งค่า แล้วคลิก Launch instance
เมื่อแสดงข้อความ Success แบบนี้แล้ว คลิก Instance ID
แล้วรอการเปิดใช้งาน Instance สักครู่จนกว่า Status check จะเปลี่ยนจาก Initializing
เป็น ✅ 2/2 checks passed
ตรวจสอบรายละเอียด ENI หลังสร้าง EC2 Instance ตัวใหม่
ต่อจากขั้นตอนที่แล้ว ผมจะลอง Filter ด้วยชื่อ Tag ของ Instance คือ tinnakorn-test
ตามที่ตั้งไว้ก่อนหน้านี้
แล้วดูที่ Instance state จะเห็นว่ามีตัวที่ Terminate ไปก่อนหน้านี้(Terminated) และตัวที่สร้างเมื่อสักครู่นี้(✅ Running) ครับ
ติ๊ก Instance ที่กำลัง ✅ Running
ก็จะเห็นรายละเอียด Instance แสดงด้านล่าง แล้วดู Public IPv4 address
, Private IPv4 addresses
, VPC ID
, Subnet ID
ในแท็บ Details จะเห็นว่ารายละเอียดตรงกับที่บันทึกไว้ครับ
แล้วเลือกแท็บ Networking
ก็จะเห็น Interface ID
ตัวที่บันทึกไว้ก่อนหน้านี้ ให้คลิกเข้าไปได้เลย
แล้วตรวจสอบรายละเอียด ENI ในช่องสีแดงที่บันทึกไว้ก่อนหน้านี้อีกครั้ง จะเห็นว่ารายละเอียด ENI ยังคงอยู่เหมือนเดิมครับ
ส่วน Network interface status ในช่องสีน้ำเงินก็เปลี่ยนจากสถานะ ⚠ Available
(พร้อมใช้งาน) เป็น ✅ In-use
(ใช้งานอยู่) เนื่องจากมีการ Attach กับ Instance นั่นเอง
ตรวจสอบรายละเอียด ENI เพิ่มเติมใน Terminal บน Windows Server ตัวใหม่
Login เข้าไปยัง Windows Server ตัวใหม่ แล้วเปิดโปรแกรม Command Prompt
แล้วรันคำสั่งแสดงข้อมูลเกี่ยวกับการกำหนดค่าเครือข่ายของ Windows Server นี้
ipconfig /all
Output (example): แล้วดูที่ Physical Address
(Mac Address) และ IPv4 Address
จะเห็นว่า EC2 Instance ตัวใหม่นี้ก็มีรายละเอียดเหมือนกับที่บันทึกมาจากขั้นตอนที่แล้วจริงๆ ครับ
Command Prompt
C:\Users\Administrator>ipconfig /all
~~~~เนื้อหาที่ละเว้น~~~~
Ethernet adapter Ethernet 3:
Connection-specific DNS Suffix . : ap-southeast-1.compute.internal
Description . . . . . . . . . . . : Amazon Elastic Network Adapter
Physical Address. . . . . . . . . : 06-BA-F9-3F-00-26
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::b262:aaf5:461c:d39%2(Preferred)
IPv4 Address. . . . . . . . . . . : 172.31.39.82(Preferred)
~~~~เนื้อหาที่ละเว้น~~~~
*ในกรณีของ Linux สามารถตรวจสอบ IP Address และ Mac Address ได้โดยรันคำสั่งด้านล่างนี้
ifconfig
ลบ AWS Resource
ลบ Resource ใน EC2
ดูวิธีการ Terminate Instance, ลบ Key Pair และ Security Group ได้ที่ลิงก์ด้านล่างนี้
สำหรับ Network interface ที่ไม่มีการ Attach กับ Instance จะมีสถานะเป็น ✅ Available
สามารถลบได้ด้วยตัวเองดังนี้
เข้าไปที่หน้าจอ Network interfaces
เลือก Network interface ID
ที่ต้องการลบ แล้วคลิก Actions
เลือก Delete
แล้วยืนยันการลบตามคำแนะนำ
สรุป
การสาธิตนี้สามารถใช้แก้ไขปัญหาในกรณีที่ EC2 Instance ตัวเก่ามีปัญหาจนถึงขั้นต้องเปลี่ยนไปใช้ EC2 Instance ตัวใหม่ แล้วต้องการใช้ IP Address
และ Mac Address
เดิมได้ นอกจากนี้วิธีนี้ยังสามารถใช้ได้ทั้ง EC2 Instance ที่เป็น AMI แบบ Windows Server และ Amazon Linux ครับ
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !
บทความที่เกี่ยวข้อง
- สร้าง EC2 ใหม่โดยใช้งาน Private IP และ MAC Address เดิม
- [สำหรับมือใหม่] การสร้าง Microsoft Windows Server 2022 Base ใน Amazon EC2
- วิธีเชื่อมโยง Elastic IP (EIP) ไปยัง EC2 Instance
- วิธีสร้าง Snapshot EC2 แบบ On-demand ด้วย AWS Backup
- การใช้ AMI เพื่อ Copy ข้อมูลของ EC2 Instance
- การ Terminate Instance, ลบ Key Pair และลบ Security Group ใน EC2